Method for Scattering Points in a Uniform Arbitrary Distribution Across a Target Mesh for a Computer Animated Creature

ABSTRACT

A programmatic arbitrary distribution of items in a modeling system may be provided. To perform the distribution, a surface may be received, and a point count of application points associated with locations on the surface may be determined. A density map may be applied over the surface to assign a density to portions of the surface for the point count. Application points are then assigned to locations on the surface according to the density map and a scattering function of the point count, where the scattering function is based on one or more repulsion forces between neighboring points. The one or more repulsion forces are treated as pushing each of the neighboring point apart. Thereafter, the surface may be provided having the application points scattered across the surface based on the one or more repulsion forces.

CROSS-REFERENCES TO PRIORITY AND RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.17/127,105, filed Dec. 18, 2020, entitled “Method for Scattering Pointsin a Uniform Arbitrary Distribution Across a Target Mesh for a ComputerAnimated Creature,” which claims the benefit of, and priority from, U.S.Provisional Patent Application No. 63/105,150 filed Oct. 23, 2020,entitled “Method for Scattering Points in a Uniform but RandomizedManner Across a Target Mesh for a Computer Animated Creature.”

The entire disclosure of the applications recited above are herebyincorporated by reference, as if set forth in full in this document, forall purposes.

FIELD

The present disclosure generally relates to computer animation and toolsfor specifying objects in a virtual scene from which computer-generatedimagery is to be generated and more particularly to a tool forspecifying a procedurally-generated set of dispersed application pointsfor feathers, hairs, or other surface objects on a three-dimensionalsimulation of a creature.

BACKGROUND

In real-world examples, a collection of like items comprising a largenumber of items might be distributed over a surface in a pattern that isarbitrary but somewhat uniform. For example, hair follicles on a surfaceof a head of a person or an animal might number in the tens of thousandsand have placements that are somewhat arbitrary but are uniformlydistributed with some constant density or with some relatively smoothdensity. For example, over one person's head, there might be regions ofconstant density except for a bald spot where the local density of hairfollicles is much lower than another area of the head. In anotherexample, there is often a higher hair density on the head of a person ascompared to hands and there might be more densely packed, but smaller,feathers on a breast of a bird as compared to the large, but lessdensely packed, tail or wing feathers. Other examples of items that havepositions relative to a surface might include feathers, fur, or otherinstances where there are a large number of items having placements on asurface or other environment.

There are many different situations where this is the case and so peoplehave come to expect the presence of collections of items distributed inan arbitrary but somewhat uniform pattern. Consequently, when it comesto computer-generated imagery, such as still images depicting a virtualscene or an animation depicting a sequence of frames each depicting thevirtual scene, often an imagery creator, such as an animator, might wantto depict such a collection of items. For example, an animator mightwant to create a character (e.g., a person, character, animal, fictionalor fanciful creature, and/or the like) having a feature comprising alarge number of items placed in position, such as over a skin surface,where those items might be feathers, hairs, fur, and/or the like, withthe positions forming a pattern that appears arbitrary, but somewhatuniform or somewhat following a density function over the surface.

Given that a large number of items might need to be placed and sized,this can be tedious for an animator to do. An animator could have acomputer interface wherein an external shell of a creature is displayedand the animator manually inputs, for each item, an item position on theexternal shell and perhaps also an item size. This can be time-consumingand might not result in a desired arbitrary placement pattern thatfollows a density function over the surface.

For simple cartoons, the complexity can be ignored and perhaps anacceptable approach is to have an automated method of uniformly placingitems in a grid pattern. However, as viewers have come to expect morecomplex visuals, there is a need for computer-driven placement of theobjects in a more realistic fashion. Some of that computer-drivencreature generation might rely on simulations and models to perform morerealistic creature generation, movement, and animation.

SUMMARY

A computer-implemented method for programmatically specifying positionsrelative to an object, for each item in a collection of items, andperhaps also sizes of each item, in a three-dimensional (3D) imagegeneration system is disclosed. The collection of positions might form apattern that is, or at least appears to be, arbitrary and/or random. Thepattern might be generated based on a programmatically-specified densityfunction, perhaps specified by a density map representable in computermemory. The density function might be a uniform density function or avarying density function that might be smoothly varying or might besmoothly varying within some areas and discontinuous at some boundariesbetween areas.

The computer-implemented method may include, under the control of one ormore computer systems configured with executable instructions, receivinga target mesh having one or more mesh attributes, wherein the targetmesh comprises a surface and determining a point count, wherein anapplication point is associated with a location on the surface and thepoint count is a count of such application points in an applicationpoint set. The computer-implement method may further include applying adensity map over the target mesh to assign a density to each of aplurality of portions of the surface wherein at least two of theportions are assigned different densities, assigning application pointsof the application point set to locations on the surface according tothe density map and a scattering function, wherein the scatteringfunction is based on one or more repulsion forces, effects of which aremodeled as to a first application point and as to one or more neighborpoints neighboring the first application point, wherein the one or morerepulsion forces are treated as pushing each of the first applicationpoint and the one or more neighbor points apart, and providing thetarget mesh having the application points of the application point setscattered across the surface based on the one or more repulsion forces.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tolimit the scope of the claimed subject matter. A more extensivepresentation of features, details, utilities, and advantages of thesurface computation method, as defined in the claims, is provided in thefollowing written description of various embodiments of the disclosureand illustrated in the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments in accordance with the present disclosure will bedescribed with reference to the drawings, in which:

FIG. 1 illustrates an environment where a target mesh of a creaturesurface may be represented as a subdivision surface for use in placementof application points for external surface objects, in an embodiment.

FIG. 2 illustrates an environment where a subdivision surface may haveplacements of application points performed through a scatteringalgorithm and density map, in an embodiment.

FIG. 3 illustrates an environment where application points may bescattered through repulsion forces with neighboring points, in anembodiment.

FIG. 4 is a flowchart of an exemplary method as might be performed bycomputing system when modeling a 3D image and/or animation of a creaturehaving application points for placement of external surface objects, inan embodiment.

FIG. 5 is a system for utilizing application points that have beenscattered in an arbitrary but even manner through repulsion forces in acomputer animation, in an embodiment.

FIG. 6 illustrates an example visual content generation system as mightbe used to generate imagery in the form of still images and/or videosequences of images, according to various embodiments.

FIG. 7 is a block diagram illustrating an example computer system uponwhich computer systems of the systems illustrated in FIGS. 1 and 5 maybe implemented.

DETAILED DESCRIPTION

In the following description, various embodiments will be described. Forpurposes of explanation, specific configurations and details are setforth in order to provide a thorough understanding of the embodiments.However, it will also be apparent to one skilled in the art that theembodiments may be practiced without the specific details. Furthermore,well-known features may be omitted or simplified in order not to obscurethe embodiment being described.

Computer simulation that is used for creature generation may be used toanimate creatures and natural movements of the creatures, such as byusing a physics engine to output animations and movements of anarticulated creature that are consistent with real-world physics andjoint constraints. This may be done through one or more algorithms thatattempt to automate this process of animating surfaces, body parts, andthe like. For example, computer simulation and animation may be used toanimate objects on a surface of a character by taking one or a subset ofobjects manually placed on the surface and attempting to place othersimilar objects on the surface through interpolations and otheralgorithmic approaches. In some ways, this is often a simple problem—howto determine natural-looking surfaces and surface objects of at most afew dozen attached objects on the surface. For other simulations, suchas those with flexible objects, animal coats or pelts, and the like, thenumber of degrees of freedom of individual units is much greater andtypically computer simulation requires a trade-off between realism,resolution, and amount of computing resources available. Because of thistrade-off, efficient computer simulation techniques can be important asthey might allow for an increase in realism and/or resolution withoutrequiring significant increases in computing resources.

Thus, creatures generated and animated can be created incomputer-readable form procedurally or manually. For example, an imageof a sphere might be generated procedurally from a user input of acenter location, a radius parameter, and a color. In another example, amore complex object might be generated procedurally from a set ofparameters and a set of procedural rules for object creation. Objectsmight also be created manually, such as by having an artist draw into acomputer system the shape of an object. In some cases, an artist mightmanually adjust a procedurally-generated object and place externalobjects on that object (e.g., feathers, hairs, fur, and the like), ormay utilize algorithmic approaches with initial input. Conversely, ifthe points are numerous, such as with feathers and pelts of animalswhere the points may be thousands or more, placement of these points istime consuming and difficult, if not impossible, to perform manually,which affects creature realism.

Realistic placement of surface objects can be provided on athree-dimensional (3D) animated creature, such as a coat, pelt, fur, orfeather groom of a creature, by randomly but uniformly distributingapplication points over a target mesh of the creature. The target meshcorresponding to the creature is provided as an input to a computeranimation and simulation system for 3D creatures (e.g., humans, animals,fictional creatures, and the like). The target mesh includes multipledifferent features and attributes, such as different curvatures, sizes,shapes, deformations, and the like of surfaces for the mesh. Further,the target mesh may include a bind-pose mesh attribute and an activemesh attribute that allows for animation of the target mesh anddetermination of position calculations with the target mesh withoutrecalculation during animation. The target mesh may further correspondto a subdivision surface that attempts to represent a smooth surfacethrough the use of a polygonal mesh. Although one or more subdivisionsurfaces are described herein as the portions that make up the targetmesh, it is understood that the target mesh may also be made ofdifferent polygons, non-uniform rational basis splines (NURBS), animplicit surface, a network of NURBS patches, of other types of surfacesincluding bicubic surfaces, quadratic surfaces, and the like.

In examples described herein, the programmatic placement of items of acollection of items over a surface or the like is referred to as arandom placement. It should be understood that placement could also bedone in some arbitrary but not truly random or pseudorandom manner.Furthermore, in examples described herein, the placement is over asurface and positions that are programmatically generated are positionson the surface. However, in other examples, the positions could berelative to the surface but not on the surface, such as being positionsthat are below or above the surface by some specified distance.

The target mesh can thus be designated for a creature having surfacethat may be represented through the subdivision surface or manifold(e.g., a topological surface of the creature). In order to disperse anddistribute external surface objects over the creature's mesh, such asthe feathers, hairs, fur, or the like of the creature, applicationpoints are distributed over the subdivision surface for the target mesh.These application points may correspond to nodes, polygonalrepresentations, and the like on or through a surface, such as folliclepoints or the like. Using the application points, an animated 3Dfeather, hair, or other animated surface coat may be attached and grownin the computer animation and simulation system.

However, other types of points may also be used, for example, during theplacement of armor, scales, or other external objects to a user. Thecomputer animation and simulation system may receive a count or numberof points to distribute over the subdivision surface such that a set ofapplication points are distributed to different locations over thesubdivision surface. Each application point may have a correspondinglocation once distributed over the surface according to a scatteringfunction or algorithm. This count of the points may be controlled toadjust the number of points, and relative concentration or sparseness ofthe points, over a subdivision surface. Thus, each application point maybe associated with one or more neighboring application points forattachment of fibers and the like over the surface. These neighboringapplication points may then be used for calculation and application ofrepulsion forces for uniform or semi-uniform but randomized placement ofapplication points over the surface in a computer modeling system, asdiscussed herein.

The process of generating a set of application points could be an outputof a computer procedure that has as its input a number of parameters,where a count of the number of parameters is smaller than a count of thenumber of application points in the set of application points, thusallowing for easier editing and replacement of a set of applicationpoints with an edited set of application points, wherein editing is doneon the parameters and the computer procedure is performed.

A density map may be determined and applied over the subdivision surfacein order to change relative concentrations and densities of applicationpoints at different areas of the subdivision surface. For example, morehair may be concentrated on a head than a hand, or more feathers may belocated within a plume of a bird than a crest. Thus, the density map maycontrol the local densities of the application points so that in certainareas or surfaces of the subdivision surface, more application pointsmay be concentrated depending on the look of the creature. The densitymap may correspond to a heatmap of application point densities and maybe input and/or assigned by a creature artist or other animator. Thedensity map allows for pulling of more application points from the setof application points in different areas of the subdivision surface. Thedensity map therefore allows for the animator to assign static, random,or artist-values to the mapping of the application point densities overthe subdivision surface.

Using the application points of the application point set, the computeranimation and simulation system may generate a uniform or semi-uniformdispersal of the application points over the subdivision surface. Theapplication points are assigned locations over the subdivision surfaceby scattering the application points randomly and according to thedensity map using a scattering algorithm or function. This scatteringfunction may utilize a random seed value to initially distribute theapplication points. The scattering function allows for approximatelyeven distribution of the application points over the subdivision surfaceusing the density map (e.g., by allowing certain areas to push or pullmore points depending on the point count), where the scattering functionfurther includes one or more repulsion forces that provide effects forone or more application points to be repulsed from one or moreneighboring points.

The repulsion force(s) may, in effect, serve to push an applicationpoint apart from its neighboring application point(s), which may provideless clumping and/or sparse portions in order to achieve a randomizedbut uniform scattering of the points. The repulsion force(s) may utilizedistance as a variable in their function(s) so that the repulsion forcesmay be stronger or weaker as a factor of distance between an applicationpoint and its neighboring point(s). For example, repulsion forces mayutilize a mathematical function or model that replicates a force thatwould push two or more points apart with respect to each other. Thisfunction may be linear, exponential, or otherwise decrease as distanceincreases (thereby increasing at closer distances). Further, therepulsion forces may operate with respect to their nearest applicationpoint neighbor or neighbors in order to apply the repulsion forcesbetween application points. The repulsion forces may also or insteadconsider a proximity distance over the surface in an animation space toapply the forces between the application points. Other factors may alsoadjust the repulsion forces' strength or intensity, including thedensity map, the corresponding follicle and/or external surface object(e.g., for thin versus thick feathers or hair), and the like. In furtherembodiments, attraction forces may also or instead be used withrepulsion forces to pull one or more application points towardneighboring application point(s). This may be used in combination withrepulsion forces to obtain a desired scattering effect and/or randomizedpoint distribution.

During post-processing, a paintable baldness UV mapping may be used withthe application points and subdivision surface in order to get rid ofpoints on the subdivision surface where the points are unwanted. Forexample, an animator may choose to remove all follicle points from thehands or feet of a character, or the talons and feet of a bird. The UVmapping may be obtained, and baldness portions identified in order toremove points from those portions. Thereafter, the target mesh may beoutput where each application point is represented as a simple box face.The original point for the box face may be in the center of a plane ofthe subdivision surface, and within a point cloud on the plane from thescattering and repulsion forces. In various embodiments, the paintablebaldness UV mapping may be applied prior to placement of fibers or otherexternal objects at the application points, or may be applied later. Forthe latter, a computer modeling system may utilize a data structure thatcorresponds to a surface having distributed application points and/orfibers or objects placed at the application points. This may be used torendered one or more images of a scene, where the images may be used toplace fibers, surface object, textures or the like over another object.

An output of the modeling system might be a data structure definingplacement or other details of points on a surface, where the placementand other details of the points are determined programmatically. Thatdata structure can then be fed to another system as an input and couldreplace or reduce the need for manual creation and/or specification ofthe placements or other details, thus saving user input time. Whileunderstood that these techniques may be applied to computer animationsystems, such as for 3D imaging and scene rendering, the techniquesdescribed herein may similarly be applied to other computer modelingsystems. For example, modeling systems for 3D printing, video gameanimation, device or object prototyping, and the like may similarlyrequire arbitrary but uniform or semi-uniform placement of particularapplication points, objects, data, or the like. In this regard, theaforementioned techniques may be applied for other virtual and/or realmodeling systems.

FIG. 1 illustrates an environment 100 where a target mesh of a creaturesurface may be represented as a subdivision surface for use in placementof application points for external surface objects, in an embodiment. Asillustrated there, environment 100 may be displayed by a computingdevice and computing display when animating a 3D creature, such as ahuman, animal, fictional creature, or the like. For example, thecomputing system may correspond to a computer animation and simulationsystem configured to animate external surface objects on a surface of acreature. The external surface objects may correspond to those objectsthat protrude from the surface of the creature, such as feathers, hairs,fur, and the like. When placing these external surface objects over atarget mesh 102, a subdivision surface 106 of target mesh 102 may beused to determine location and placement of one or more applicationpoints that are used to attach or bind the external objects to thecorresponding surfaces. For example, an application point may correspondto a follicle point in a modeling of a creature, which is used to attachan animated 3D feather, hair, or the like. In various embodiments,target mesh 102 and subdivision surface 106 of the animation of thecreature partial shown in environment 100 corresponds to a computeranimated 3D bird.

As shown in environment 100, target mesh 102 is shown as a curvature 104for a creature, which may further have 3D shapes, contours, and curveswithin a modeling system. In order to represent curvature 104 and allowfor placement of application points, a representation 112 providessubdivision surface 106 as a polygonal mesh 108 of polygon surfaces thatmake up subdivision surface 106. Polygonal mesh 108 of subdivisionsurface 106 corresponds to a coarser mesh of polygons that attempts torepresent curvature 104. This may be done through taking an initialgiven polygon mesh and applying a refinement function to subdivide thesurface of the given mesh into smaller surfaces and polygons. This maybe applied one or more times, such as in an iterative process, togenerate polygon face 110 and additional faces within polygonal mesh108.

One or more approximating and/or interpolating functions or algorithmsmay be utilized in order to provide representation 112 of target mesh102 as subdivision surface 106. Polygonal mesh 108 may allow for betteror easier placement of application points by allowing for in-planeplacement of box faces for the application points. Further, density mapsmay be applied more easily over subdivision surface 106 in order todesignate areas for higher or lower densities of correspondingapplication points, and therefore attached external surface objects.Additionally, one or more UV mappings may be applied, such as apaintable baldness UV mapping, that may remove all or a subset ofapplication points within areas of subdivision surface 106 where thepoints are unwanted.

Environment 100 might be implemented by software, interfaces, featuresand/or functionality of a computer system used by animators or others tospecify details that can be used to generate computer-generated imagerysuch as images and sequences of video frames.

FIG. 2 illustrates an environment 200 where a subdivision surface mayhave placements of application points performed through a scatteringalgorithm and density map, in an embodiment. Environment 200 shows asubdivision surface 202 having application points, such as folliclepoints, distributed over the polygon faces and surfaces of subdivisionsurface 202, such as subdivision surface 106 that represents target mesh102 in environment 100. Thus, as illustrated there, environment 200 maybe displayed by a computing device and computing display when animatinga 3D creature, such as a human, animal, fictional creature, or the like.For example, the computing system may correspond to a computer animationand simulation system configured to animate external surface objects ona surface of a creature. The external surface objects may correspond tothose objects that protrude from the surface of the creature, such asfeathers, hairs, fur, and the like. When distributing and assigningapplication points over subdivision surface 202, a scattering functionmay be used that includes repulsion forces between neighboring points inorder to perform a more uniform and/or approximately even distributionof the application points over the portions of subdivision surface 202.

For example, in a first surface portion 204 and a second surface portion206, the scattering function may be applied to an application point sethaving a point count of application points. The point count maycorrespond to a number or total of points to distribute over all orassigned surfaces of the creature. A density map may designate firstsurface portion 204 and second surface portion 206 as receive an equalor relatively equal number of application points for the applicationpoint set. Thus, first surface portion 204 and second surface portion206 both are shown with three application points, or a distribution ofsix application points over the combined first surface portion 204 andsecond surface portion 206. When assigning locations on first surfaceportion 204 and second surface portion 206 to the designated applicationpoints of the application point set, the scattering function may beinvoked to determine such locations. For example, an application point212 may be assigned a first location on first surface portion 204 and anapplication point 214 may be assigned a second location on secondsurface portion 206.

When assigning the locations to application point 212 and applicationpoint 214 on first surface portion 204 and second surface portion 206,respectively, the scattering function or algorithm may utilize aninitial random seed value to perform a scattering or distribution oversubdivision surface 202. This scattering function may consider anydensity map to pull more application points in an area or push moreapplication points away or out of an area. Once distributed acrosssubdivision surface 202, such as over the polygonal mesh and faces ofsubdivision surface 202, one or more repulsion forces may be applied asa mathematical function or algorithm to cause nearby and/or neighboringapplication points to be repulsed from one another or pushed apart intoa more even distribution of the points (e.g. to avoid clumps and sparseareas). The repulsion force(s) may be a function of distance between thepoints and may utilize a mathematical model to separate points as afunction of their closeness or distance, which may decrease in a linear,exponential, or other function as the points are pushed apart.

For example, as application points are pushed apart to a greaterdistance, or the initial distance between application points is greaterthan between other neighboring points, the repulsion force(s) may alsodecrease with this increase in distance. Further, repulsion forcesbetween different neighboring and/or associated application points maybalance with other competing application points and their correspondingrepulsion force. One or more repulsion forces may be modeled toreplicate a force that would push two or more points apart with respectto each other one or more nearest neighbor application points in orderto apply the repulsion forces between nearby application points. Therepulsion forces may also or instead utilize a distance over the surfacein an animation space to apply the repulsion forces between theapplication points. The repulsion forces between neighboring points arefurther shown with regard to FIG. 3.

In contrast to the uniform distribution of application points on firstsurface portion 204 and second surface portion 206, a third surfaceportion 208 may receive a different density or concentration ofapplication points. For example, a density map may be applied over oneor more surface of subdivision surface 202, which may change therelative density of distribution of application points over subdivisionsurface 202. A creature artist or other animator may provide or paintthe density map over the surfaces of subdivision surface 202. Thus,third surface portion 208 includes a lower density of applicationpoints, shown as two application points.

In a similar fashion to first surface portion 204 and second surfaceportion 206, locations for assignment of the application points in thirdsurface portion 208 may be determined using the scattering function oralgorithm, which utilizes repulsion forces to push apart neighboringpoints and perform a more even distribution of application points. Thus,an application point 216 may be assigned a location on third surfaceportion 208 using the scattering function and repulsion forces withneighboring application points to push the application points apart fromeach other using one or more algorithmic repulsion functions or factors.However, it is understood more or less application points may also beassigned locations over first surface portion 204, second surfaceportion 206, and third surface portion 208.

Since the point density is less and distances may be farther on thirdsurface portion 208, the repulsion force may be calculated with less“push” strength between neighboring points. In some embodiments,depending on the point density, the same or a different mathematicalfunction for the repulsion force may be selected and used. The densitymap may also be used to designate a bald surface portion 210, where thedensity may be set at zero. However, in other embodiments, a paintablebaldness UV mapping may be used in post-processing to designate baldsurface portion 210 as a bald portion of subdivision surface 202. Thus,application points may be removed from bald surface portion 210 usingthe UV mapping.

Environment 200 might be implemented by software, interfaces, featuresand/or functionality of a computer system used by animators or others tospecify details that can be used to generate computer-generated imagerysuch as images and sequences of video frames.

FIG. 3 illustrates an environment 300 where application points may bescattered through repulsion forces with neighboring points, in anembodiment. Environment 300 shows a surface portion 302 havingapplication points, such as follicle points, distributed over thepolygon face or surface of surface portion 302, which may correspond toa portion of subdivision surface 106 that represents target mesh 102 inenvironment 100. Thus, as illustrated there, environment 300 may bedisplayed by a computing device and computing display when animating a3D creature, such as a human, animal, fictional creature, or the like.For example, the computing system may correspond to a computer animationand simulation system configured to animate external surface objects ona surface of a creature. The external surface objects may correspond tothose objects that protrude from the surface of the creature, such asfeathers, hairs, fur, and the like. When distributing and assigningapplication points to locations on surface portion 302, a scatteringfunction or algorithm may be used to first distribute the applicationpoints, which may then use repulsion forces to cause a more evendistribution of the application points over surface portion 302. Thus,in environment 300, the repulsion forces interacting between neighboringand/or nearby application points are shown.

On surface portion 302, an application point 304 is shown interactingwith a neighboring point 306 a, a neighboring point 306 b, a neighboringpoint 306 c, and a neighboring point 306 d. Further a nearby applicationpoint 310 may also interact with one or more of application point 304and/or neighboring points 306 a-d. These may all interact through one ormore repulsion forces, which correspond to functions or models to causeapplication points to be pushed apart when assigned locations over asubdivision surface. The repulsion force(s) may be creature specific, ormay correspond to multiple different creatures, including creatures ofthe same or different type. Further, the repulsion forces may onlyinteract with neighboring points, or may further interact with nearbypoints that may be further separated from each application point. Forexample, one or more nearest application point neighbors and/or adistance over the surface in an animation space may be considered toapply the repulsion forces between the application points. The repulsionforces may be applied as a mathematical function over the polygonsurface for the particular application point or may be applied furtherover multiple polygon surfaces for a subdivision surface. For example,the repulsion force may push two points apart as a function of distancebetween those points, which may be linear, exponential, polynomial, orthe like to affect different points over distances between the points.

Application point 304 is shown as interacting with neighboring points306 a-d through a repulsion force 308 a, a repulsion force 308 b, arepulsion force 308 c, and a repulsion force 308 d to assign locationsof application point 304 and neighboring points 306 a-d on surfaceportion 302. Repulsion forces 308 a-d each may interact differently withapplication point 304 and neighboring points 306 a-d for determinationof the locations of assignment, such as based on a strength of repulsionforces 308 a-d based on a relative distance of neighboring points 306a-d with application point 304. For example, neighboring point 306 a andneighboring point 306 d are shows as an about equal distance fromapplication point 304, and therefore may have a relatively same orsimilar repulsion force 308 a and repulsion force 308 d, respectively,with application point 304. Therefore, application point 304 andneighboring points 308 a and 308 d may be pushed apart to a relativelysame or similar distance or by a relatively same or similar strength.

However, neighboring point 306 b is shown as scattered close toapplication point 304 from the corresponding random seed value or nodefor the scattering function. Thus, repulsion force 308 b may be strongerand more strongly push apart application point 304 from neighboringpoint 306 b. In contrast, neighboring point 306 c is shown as furthestaway from application point 304 from neighboring points 306 a-c, andtherefore may be the weakest push force to push apart application point304 and neighboring point 306 c. At a certain distance, the repulsionforce may be weak enough or nonexistent due to the distance and theforce's function or model for the repulsion force. Further, therepulsion force(s) designated for a particular scattering function mayalso consider other variables with or than distance in determination ofthe interacting force model that causes assignment of surface locationsto application points.

Further, nearby point 310 is shown interacting with neighboring point306 c through a repulsion force 312. This may cause adjustment ofneighboring point 306 c and/or application point 304. In someembodiments, by causing a change in the location of assignment forneighboring point 306 c (e.g., by pushing neighboring point 306 c to alocation relative to application point 304), the location of assignmentfor application point 304 may be changed. Thus, repulsion forces bynearby point 310 may also cause a change to location of assignment ofapplication point 304 in some embodiments. Once the repulsion forces areapplied, the locations to assign the application points shown inenvironment 300 may be determined and the points may be placed in acenter of the plane for surface portion 302, where a simple box face mayrepresent where each point is in a disjointed mesh for the subdivisionsurface.

During application of the repulsion forces shown in FIG. 3 (e.g.,repulsion forces 308 a-d and/or 312), the modeling system may performone or more iterations of repulsion force application based on therepulsion force function. For example, one application of the repulsionsforces may be sufficient to obtain a requisite uniform or semi-uniformbut arbitrary distribution of application points over a particular mesh.However, by performing additional iterations of the repulsion force overthe application points, a more uniform distribution of points may beachieved. In this regard, a number of iterations may be assigned basedon the particular mesh, artist requirements, or the like. The number ofiterations to calculate and apply the repulsion force(s) to theapplication points (e.g., to cause distribution of those applicationpoints over the mesh) may be configurable based on the modeling system.In some embodiments, when modeling the application points over thetarget mesh, 1, 10, 50, or 100 iterations of application of therepulsion force(s) during point distribution may be applied in order toachieve the requisite application point distribution.

FIG. 4 is a flowchart 400 of an exemplary method as might be performedby computing system when modeling a 3D image and/or animation of acreature having application points for placement of external surfaceobjects, in an embodiment. Note that one or more steps, processes, andmethods described herein of flowchart 400 may be omitted, performed in adifferent sequence, or combined as desired or appropriate.

In step 402 of flowchart 400, a target mesh for a creature that hasattributes and a subdivision surface is received. The target mesh may berepresented by the subdivision surface having a polygonal mesh ofpolygons, which allows for placement of application points and/orpainting of density and baldness UV maps over surfaces of thesubdivision surface. The target mesh may have attributes that allow forbind-pose and active attributes of the mesh so that positioncalculations of the mesh do not need to be performed during animation.Points for application of external surface objects, such as folliclepoints, to scatter over the surface in an even randomization aredetermined at step 404. For example, a point count may be designated bya creature artist or animator for a particular 3D animated creature,which may include a pelt, hide, fur, or groom of a character orcreature. The point count may therefore be used to create an applicationpoint set that is then to be distributed over the subdivision surface.These points may correspond to application points, follicle points, orother nodes that may be used to attach and/or place an external surfaceobject on a surface in a 3D animation.

At step 406, a density map of point densities in different portions ofthe subdivision surface is determined. The density map may be used topull more or less points into specific areas of the subdivision surface,such as an area corresponding to a limb, appendage, head, or other areaof the subdivision surface representing a creature or a portion of acreature or other object (including accessories, clothing, or the likeworn by, on, or attached to the creature). The density map may bepainted over the surface by the creature artist and/or animator and mayspecifically designate the application points to pull into areas of thesurface. This may relatively assign such densities or concentrations(e.g., higher or lower, and degree of change, than another area,including adjacent areas) over the surface. However, a density map maynot be required where uniform or semi-uniform point placement over theentire surface is desired.

At step 408, the points are distributed, such as scattered, across thesubdivision surface using the density map, for example, by using arandom seed value with a scattering function to initially assignlocations of the application points over the surface. This scatteringfunction may provide a randomized placement of the application pointsover the corresponding subdivision surface. In various embodiments, achange to the density map may be received and the points scatteredacross the subdivision surface may be adjusted using the change to thedensity map without re-spreading points using the one or more repulsionforces. For example, this may include receiving the change to thedensity map and using the change to determine a rescattering zone thatis less than the entire surface. Thereafter, the application points maybe scattered within the rescattering zone using the change to thedensity map, while positioning of at least one point outside therescattering zone is independent of the rescattering.

At step 410, after distributing, the points are moved with respect toneighboring (and/or nearby) points by applying repulsion forces betweenthe points. These repulsion forces correspond to a mathematical functionor model that attempts to replicate a repulsion force between two pointsto push those points apart. For example, the repulsion force may pushtwo points apart as a function of distance between those points, whichmay be linear, exponential, or otherwise decrease as distance increases(thereby increasing at closer distances). Further, the repulsion forcesmay operate with respect to their nearest application point neighbor orneighbors in order to apply the repulsion forces between applicationpoints. The repulsion forces may also or instead consider a proximitydistance over the surface in an animation space to apply the forcesbetween the application points. Once applied, the points are assignedlocations on the subdivision surface with location parameters. At step412, a UV mapping is applied to points on the subdivision surface, suchas a paintable baldness UV mapping. This allows for removal of points inareas of the subdivision surface where the points are unwanted. However,step 412 may be optional in that certain creature may not have baldnessportions. At step 414, the target mesh is output with the points acrossthe subdivision surface. This may include providing a disjointed meshwith a point represented as a box face and the original point origin ina center of a plane for the subdivision surface.

FIG. 5 illustrates a system 500 for utilizing application points thathave been scattered in a randomized but even manner through repulsionforces in a computer animation, in an embodiment. System 500 includes adataset 502, an application point processing unit 506, a renderer 518, auser interface (UI) 520, and an application point count 522.

A user 540 may interact with the UI 520 to access, load, and/or defineone or more surfaces for which application point may be assignedlocations over the surface(s) based on application point count 522 and ascattering algorithm or function that utilizes repulsion forces torandomize but evenly spread the application points. A surface maytherefore be pre-generated or may be generated by user 540 whenperforming the methods and/or processes described herein for applicationpoint scattering over surfaces. Application point count 522 mayindicate, for example, a number or count for an application point set tobe assigned locations over a surface in a 2D or 3D space, which mayinclude surfaces stored by dataset 502. Application point count 522 mayinclude, for example, a number of points or the like in a virtual spacecorresponding to the surface that are used as application points forassignment of fibers or other surface objects. This may includedisposing application point count 522 over the surface. Dataset 502 maystore data for different surfaces, including a stored surface 504, thatmay be stored and/or loaded (e.g., characters, creatures, or objects).Dataset 502 may load data available to user 540 via UI 520 from a sourceof an animation stored by dataset 502, such as a tessellated mesh,subdivision surface, or the like, which is used to define a surface.Further dataset 502 may include fibers to use with application pointsspread over a surface (e.g., a pelt, feather groom, coat, robe, cloak,etc.). Thus, in some embodiments, application point count 522 may beplaced over or nearby stored surface 504 loaded to UI 520 from dataset502.

Application point processing unit 506 may utilize the methods andprocesses described herein to take application point count 522 with anyadditional surface data from dataset 502 and/or user 540, and thereafterperform the scattering operations herein for those application pointswhen assigning locations over the surface. This may generate a uniformor semi-uniform placement and/or scattering of the application point setover the corresponding surface based on application point count 522 in arandomized manner, for example, based on repulsion forces to assign theapplication point locations. Application point processing unit 506 maycalculate and generate initial scattering 514 for the surface using ascattering algorithm and/or a randomized seed value, as well as anyassigned density map to push or pull more or less application points toparticular areas on the surface. Initial scattering may correspond to ascattering of application point count 522 over the surface prior toapplying repulsion forces between application point count 522, asdescribed herein. Further, the finalized placement and/or assignment ofpoints from initial scattering 514 with respect to application pointcount 522 may be used with the repulsion forces to generate randomizedscattering 516, as described herein. This allows for the uniform orsemi-uniform but randomized assignment of application points toplacements over the corresponding surface.

Application point processing unit 506 includes a processor 510 thatexecutes program code 512 to take as input application point count 522with a surface, calculate initial scattering 514, and use initialscattering 514 to calculate randomized scattering 516. Application pointprocessing unit 506 may further store surface with scattered points 508for a specific surface and application point count 522 to dataset 502 sothat the corresponding randomized scattering 516 may be retrieved and/orused. This includes use with renderer 518 when rendering a scene havingthe surface and corresponding application points, fibers, and/orattached external objects over the surface. For example, applicationpoint processing unit 506 may initiate the process by taking applicationpoint count 522 with any additional data from dataset 502, andthereafter determining randomized scattering 516 through initialscattering 514, which may include those determined from repulsion forcesbetween neighboring and/or associated application points. Based onrandomized scattering 516, application point processing unit 506 maythen provide any fibers and/or external objects attached to applicationpoints over a surface using surface with scattered points 508 stored bydataset 502. This allows for reproduction of the corresponding surfacebased on randomized scattering 516. Application point processing unit506 may then move to the next surface and application point countsdesignated by user 540 and further perform additional application pointscattering as requested. The resulting surfaces, fibers, and the likethat have been animated and stored by dataset 502 may further berendered by rendered 518 and/or output to user 540 to inspect theresults.

In this regard, the target mesh of the subdivision surface may be usedto render a character, creature, or object within an animation andrendering system, such as the visual content generation system 600 ofFIG. 6. The target mesh may correspond to different polygons, bicubics,non-uniform rational basis splines (NURBS), an implicit surface, and/ora network of NURBS patches, which, when constructed according to thesubdivision rules in a subdivision library may create the target mesh.Using the subdivision rules, a collection of interconnected vertices,edges, and faces may be determined, and the subdivision rules maydescribe how a target mesh can be created which will have more vertices,edges, and faces. When constructed, this may approach a subdivisionlimit surface that is used during rendering to correctly render anddisplay the corresponding character, creature, or object. Thus, usingthe subdivision rules, placement of the application points may bedetermined in the manner described herein, where when the subdivisionlimit surface with randomized but uniformly spread application iscreated and provided to the rendering system (e.g., see FIG. 6), arendering may be determined for use with a computer animation andrendering system.

For example, the visual content generation system 600 (see FIG. 6) isconfigured to receive the values for creature generation and animationin environments 100, 200, and 300 as input and output one or more staticimages and/or one or more animated videos. The static image(s) and/orthe animated video(s) include one or more visual representations of acreature having a feather groom, hide, pelt, hair, coat, or the like.For example, FIG. 6 illustrates the example visual content generationsystem 600 as might be used to generate imagery in the form of stillimages and/or video sequences of images from a target mesh havingrandomized but uniformly scattered application points using subdivisionrules, libraries, and limit surfaces. The visual content generationsystem 600 might generate imagery of live action scenes, computergenerated scenes, or a combination thereof. In a practical system, usersare provided with tools that allow them to specify, at high levels andlow levels where necessary, what is to go into that imagery. Forexample, a user might be an animation artist, such as a creature artistgenerating and animating the creature's manifolds and correspondingexternal objects in environments 100, 200, and 300, and might use thevisual content generation system 600 to capture interaction between twohuman actors performing live on a sound stage and replace one of thehuman actors with a computer-generated anthropomorphic non-human beingthat behaves in ways that mimic the replaced human actor's movements andmannerisms, and then add in a third computer-generated character andbackground scene elements that are computer-generated, all in order totell a desired story or generate desired imagery.

Still images that are output by visual content generation system 600might be represented in computer memory as pixel arrays, such as atwo-dimensional array of pixel color values, each associated with apixel having a position in a two-dimensional image array. Pixel colorvalues might be represented by three or more (or fewer) color values perpixel, such as a red value, a green value, and a blue value (e.g., inRGB format). Dimensions of such a two-dimensional array of pixel colorvalues might correspond to a preferred and/or standard display scheme,such as 1920-pixel columns by 1280-pixel rows or 4096-pixel columns by2160-pixel rows, or some other resolution. Images might or might not bestored in a compressed format, but either way, a desired image may berepresented as a two-dimensional array of pixel color values. In anothervariation, images are represented by a pair of stereo images forthree-dimensional presentations and in other variations, an imageoutput, or a portion thereof, might represent three-dimensional imageryinstead of just two-dimensional views. In yet other embodiments, pixelvalues are data structures and a pixel value can be associated with apixel and can be a scalar value, a vector, or another data structureassociated with a corresponding pixel. That pixel value might includecolor values, or not, and might include depth values, alpha values,weight values, object identifiers or other pixel value components.

A stored video sequence might include a plurality of images such as thestill images described above, but where each image of the plurality ofimages has a place in a timing sequence and the stored video sequence isarranged so that when each image is displayed in order, at a timeindicated by the timing sequence, the display presents what appears tobe moving and/or changing imagery. In one representation, each image ofthe plurality of images is a video frame having a specified frame numberthat corresponds to an amount of time that would elapse from when avideo sequence begins playing until that specified frame is displayed. Aframe rate might be used to describe how many frames of the stored videosequence are displayed per unit time. Example video sequences mightinclude 24 frames per second (24 FPS), 50 FPS, 140 FPS, or other framerates. In some embodiments, frames are interlaced or otherwise presentedfor display, but for clarity of description, in some examples, it isassumed that a video frame has one specified display time, but othervariations might be contemplated.

One method of creating a video sequence is to simply use a video camerato record a live action scene, i.e., events that physically occur andcan be recorded by a video camera. The events being recorded can beevents to be interpreted as viewed (such as seeing two human actors talkto each other) and/or can include events to be interpreted differentlydue to clever camera operations (such as moving actors about a stage tomake one appear larger than the other despite the actors actually beingof similar build, or using miniature objects with other miniatureobjects so as to be interpreted as a scene containing life-sizedobjects).

Creating video sequences for story-telling or other purposes often callsfor scenes that cannot be created with live actors, such as a talkingtree, an anthropomorphic object, space battles, and the like. Such videosequences might be generated computationally rather than capturing lightfrom live scenes. In some instances, an entirety of a video sequencemight be generated computationally, as in the case of acomputer-animated feature film. In some video sequences, it is desirableto have some computer-generated imagery and some live action, perhapswith some careful merging of the two.

While computer-generated imagery might be creatable by manuallyspecifying each color value for each pixel in each frame, this is likelytoo tedious to be practical. As a result, a creator uses various toolsto specify the imagery at a higher level. As an example, an artist mightspecify the positions in a scene space, such as a three-dimensionalcoordinate system, of objects and/or lighting, as well as a cameraviewpoint, and a camera view plane. From that, a rendering engine couldtake all of those as inputs, and compute each of the pixel color valuesin each of the frames. In another example, an artist specifies positionand movement of an articulated object having some specified texturerather than specifying the color of each pixel representing thatarticulated object in each frame.

In a specific example, a rendering engine performs ray tracing wherein apixel color value is determined by computing which objects lie along aray traced in the scene space from the camera viewpoint through a pointor portion of the camera view plane that corresponds to that pixel. Forexample, a camera view plane might be represented as a rectangle havinga position in the scene space that is divided into a grid correspondingto the pixels of the ultimate image to be generated, and if a raydefined by the camera viewpoint in the scene space and a given pixel inthat grid first intersects a solid, opaque, blue object, that givenpixel is assigned the color blue. Of course, for moderncomputer-generated imagery, determining pixel colors—and therebygenerating imagery—can be more complicated, as there are lightingissues, reflections, interpolations, and other considerations.

As illustrated in FIG. 6, a live action capture system 602 captures alive scene that plays out on a stage 604. Live action capture system 602is described herein in greater detail, but might include computerprocessing capabilities, image processing capabilities, one or moreprocessors, program code storage for storing program instructionsexecutable by the one or more processors, as well as user input devicesand user output devices, not all of which are shown.

In a specific live action capture system, cameras 606(1) and 606(2)capture the scene, while in some systems, there might be other sensor(s)608 that capture information from the live scene (e.g., infraredcameras, infrared sensors, motion capture (“mo-cap”) detectors, etc.).On stage 604, there might be human actors, animal actors, inanimateobjects, background objects, and possibly an object such as a greenscreen 610 that is designed to be captured in a live scene recording insuch a way that it is easily overlaid with computer-generated imagery.Stage 604 might also contain objects that serve as fiducials, such asfiducials 612(1)-(3), that might be used post-capture to determine wherean object was during capture. A live action scene might be illuminatedby one or more lights, such as an overhead light 614.

During or following the capture of a live action scene, live actioncapture system 602 might output live action footage to a live actionfootage storage 620. A live action processing system 622 might processlive action footage to generate data about that live action footage andstore that data into a live action metadata storage 624. Live actionprocessing system 622 might include computer processing capabilities,image processing capabilities, one or more processors, program codestorage for storing program instructions executable by the one or moreprocessors, as well as user input devices and user output devices, notall of which are shown. Live action processing system 622 might processlive action footage to determine boundaries of objects in a frame ormultiple frames, determine locations of objects in a live action scene,where a camera was relative to some action, distances between movingobjects and fiducials, etc. Where elements have sensors attached to themor are detected, the metadata might include location, color, andintensity of overhead light 614, as that might be useful inpost-processing to match computer-generated lighting on objects that arecomputer-generated and overlaid on the live action footage. Live actionprocessing system 622 might operate autonomously, perhaps based onpredetermined program instructions, to generate and output the liveaction metadata upon receiving and inputting the live action footage.The live action footage can be camera-captured data as well as data fromother sensors.

An animation creation system 630 is another part of visual contentgeneration system 600. Animation creation system 630 might includecomputer processing capabilities, image processing capabilities, one ormore processors, program code storage for storing program instructionsexecutable by the one or more processors, as well as user input devicesand user output devices, not all of which are shown. Animation creationsystem 630 might be used by animation artists, managers, and others tospecify details, perhaps programmatically and/or interactively, ofimagery to be generated. From user input and data from a database orother data source, indicated as a data store 632, animation creationsystem 630 might generate and output data representing objects (e.g., ahorse, a human, a ball, a teapot, a cloud, a light source, a texture,etc.) to an object storage 634, generate and output data representing ascene into a scene description storage 636, and/or generate and outputdata representing animation sequences to an animation sequence storage638.

Scene data might indicate locations of objects and other visualelements, values of their parameters, lighting, camera location, cameraview plane, and other details that a rendering engine 650 might use torender CGI imagery. For example, scene data might include the locationsof several articulated characters, background objects, lighting, etc.specified in a two-dimensional space, three-dimensional space, or otherdimensional space (such as a 2.5-dimensional space, three-quarterdimensions, pseudo-3D spaces, etc.) along with locations of a cameraviewpoint and view place from which to render imagery. For example,scene data might indicate that there is to be a red, fuzzy, talking dogin the right half of a video and a stationary tree in the left half ofthe video, all illuminated by a bright point light source that is aboveand behind the camera viewpoint. In some cases, the camera viewpoint isnot explicit, but can be determined from a viewing frustum. In the caseof imagery that is to be rendered to a rectangular view, the frustumwould be a truncated pyramid. Other shapes for a rendered view arepossible and the camera view plane could be different for differentshapes.

Animation creation system 630 might be interactive, allowing a user toread in animation sequences, scene descriptions, object details, etc.and edit those, possibly returning them to storage to update or replaceexisting data. As an example, an operator might read in objects fromobject storage into a baking processor 642 that would transform thoseobjects into simpler forms and return those to object storage 634 as newor different objects. For example, an operator might read in an objectthat has dozens of specified parameters (movable joints, color options,textures, etc.), select some values for those parameters and then save abaked object that is a simplified object with now fixed values for thoseparameters.

Rather than requiring user specification of each detail of a scene, datafrom data store 632 might be used to drive object presentation. Forexample, if an artist is creating an animation of a spaceship passingover the surface of the Earth, instead of manually drawing or specifyinga coastline, the artist might specify that animation creation system 630is to read data from data store 632 in a file containing coordinates ofEarth coastlines and generate background elements of a scene using thatcoastline data.

Animation sequence data might be in the form of time series of data forcontrol points of an object that has attributes that are controllable.For example, an object might be a humanoid character with limbs andjoints that are movable in manners similar to typical human movements.An artist can specify an animation sequence at a high level, such as“the left hand moves from location (X1, Y1, Z1) to (X2, Y2, Z2) overtime T1 to T2”, at a lower level (e.g., “move the elbow joint 2.5degrees per frame”) or even at a very high level (e.g., “character Ashould move, consistent with the laws of physics that are given for thisscene, from point P1 to point P2 along a specified path”).

Animation sequences in an animated scene might be specified by whathappens in a live action scene. An animation driver generator 644 mightread in live action metadata, such as data representing movements andpositions of body parts of a live actor during a live action scene.Animation driver generator 644 might generate corresponding animationparameters to be stored in animation sequence storage 638 for use inanimating a CGI object. This can be useful where a live action scene ofa human actor is captured while wearing mo-cap fiducials (e.g.,high-contrast markers outside actor clothing, high-visibility paint onactor skin, face, etc.) and the movement of those fiducials isdetermined by live action processing system 622. Animation drivergenerator 644 might convert that movement data into specifications ofhow joints of an articulated CGI character are to move over time.

A rendering engine 650 can read in animation sequences, scenedescriptions, and object details, as well as rendering engine controlinputs, such as a resolution selection and a set of renderingparameters. Resolution selection might be useful for an operator tocontrol a trade-off between speed of rendering and clarity of detail, asspeed might be more important than clarity for a movie maker to testsome interaction or direction, while clarity might be more importantthan speed for a movie maker to generate data that will be used forfinal prints of feature films to be distributed. Rendering engine 650might include computer processing capabilities, image processingcapabilities, one or more processors, program code storage for storingprogram instructions executable by the one or more processors, as wellas user input devices and user output devices, not all of which areshown.

Visual content generation system 600 can also include a merging system660 that merges live footage with animated content. The live footagemight be obtained and input by reading from live action footage storage620 to obtain live action footage, by reading from live action metadatastorage 624 to obtain details such as presumed segmentation in capturedimages segmenting objects in a live action scene from their background(perhaps aided by the fact that green screen 610 was part of the liveaction scene), and by obtaining CGI imagery from rendering engine 650.

A merging system 660 might also read data from rulesets formerging/combining storage 662. A very simple example of a rule in aruleset might be “obtain a full image including a two-dimensional pixelarray from live footage, obtain a full image including a two-dimensionalpixel array from rendering engine 650, and output an image where eachpixel is a corresponding pixel from rendering engine 650 when thecorresponding pixel in the live footage is a specific color of green,otherwise output a pixel value from the corresponding pixel in the livefootage.”

Merging system 660 might include computer processing capabilities, imageprocessing capabilities, one or more processors, program code storagefor storing program instructions executable by the one or moreprocessors, as well as user input devices and user output devices, notall of which are shown. Merging system 660 might operate autonomously,following programming instructions, or might have a user interface orprogrammatic interface over which an operator can control a mergingprocess. In some embodiments, an operator can specify parameter valuesto use in a merging process and/or might specify specific tweaks to bemade to an output of merging system 660, such as modifying boundaries ofsegmented objects, inserting blurs to smooth out imperfections, oradding other effects. Based on its inputs, merging system 660 can outputan image to be stored in a static image storage 670 and/or a sequence ofimages in the form of video to be stored in an animated/combined videostorage 672.

Thus, as described, visual content generation system 600 can be used togenerate video that combines live action with computer-generatedanimation using various components and tools, some of which aredescribed in more detail herein. While visual content generation system600 might be useful for such combinations, with suitable settings, itcan be used for outputting entirely live action footage or entirely CGIsequences. The code may also be provided and/or carried by a transitorycomputer readable medium, e.g., a transmission medium such as in theform of a signal transmitted over a network.

According to one embodiment, the techniques described herein areimplemented by one or more generalized computing systems programmed toperform the techniques pursuant to program instructions in firmware,memory, other storage, or a combination. Special-purpose computingdevices may be used, such as desktop computer systems, portable computersystems, handheld devices, networking devices or any other device thatincorporates hard-wired and/or program logic to implement thetechniques.

One embodiment might include a carrier medium carrying image data thatincludes image data having shadow details generated using the methodsdescribed herein. The carrier medium can comprise any medium suitablefor carrying the image data, including a storage medium, e.g.,solid-state memory, an optical disk or a magnetic disk, or a transientmedium, e.g., a signal carrying the image data such as a signaltransmitted over a network, a digital signal, a radio frequency signal,an acoustic signal, an optical signal or an electrical signal.

For example, FIG. 7 is a block diagram that illustrates a computersystem 700 upon which the computer systems of the systems describedherein and/or visual content generation system 600 (see FIG. 6) may beimplemented. Computer system 700 includes a bus 702 or othercommunication mechanism for communicating information, and a processor704 coupled with bus 702 for processing information. Processor 704 maybe, for example, a general-purpose microprocessor.

Computer system 700 also includes a main memory 706, such as arandom-access memory (RAM) or other dynamic storage device, coupled tobus 702 for storing information and instructions to be executed byprocessor 704. Main memory 706 may also be used for storing temporaryvariables or other intermediate information during execution ofinstructions to be executed by processor 704. Such instructions, whenstored in non-transitory storage media accessible to processor 704,render computer system 700 into a special-purpose machine that iscustomized to perform the operations specified in the instructions.

Computer system 700 further includes a read only memory (ROM) 708 orother static storage device coupled to bus 702 for storing staticinformation and instructions for processor 704. A storage device 710,such as a magnetic disk or optical disk, is provided and coupled to bus702 for storing information and instructions.

Computer system 700 may be coupled via bus 702 to a display 712, such asa computer monitor, for displaying information to a computer user. Aninput device 714, including alphanumeric and other keys, is coupled tobus 702 for communicating information and command selections toprocessor 704. Another type of user input device is a cursor control716, such as a mouse, a trackball, or cursor direction keys forcommunicating direction information and command selections to processor704 and for controlling cursor movement on display 712. This inputdevice typically has two degrees of freedom in two axes, a first axis(e.g., x) and a second axis (e.g., y), that allows the device to specifypositions in a plane.

Computer system 700 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 700 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 700 in response to processor 704 executing one or more sequencesof one or more instructions contained in main memory 706. Suchinstructions may be read into main memory 706 from another storagemedium, such as storage device 710. Execution of the sequences ofinstructions contained in main memory 706 causes processor 704 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperation in a specific fashion. Such storage media may includenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical or magnetic disks, such as storage device 710.Volatile media includes dynamic memory, such as main memory 706. Commonforms of storage media include, for example, a floppy disk, a flexibledisk, hard disk, solid state drive, magnetic tape, or any other magneticdata storage medium, a CD-ROM, any other optical data storage medium,any physical medium with patterns of holes, a RAM, a PROM, an EPROM, aFLASH-EPROM, NVRAM, any other memory chip or cartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire, and fiber optics, including thewires that include bus 702. Transmission media can also take the form ofacoustic or light waves, such as those generated during radio-wave andinfra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 704 for execution. For example,the instructions may initially be carried on a magnetic disk orsolid-state drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over anetwork connection. A modem or network interface local to computersystem 700 can receive the data. Bus 702 carries the data to main memory706, from which processor 704 retrieves and executes the instructions.The instructions received by main memory 706 may optionally be stored onstorage device 710 either before or after execution by processor 704.

Computer system 700 also includes a communication interface 718 coupledto bus 702. Communication interface 718 provides a two-way datacommunication coupling to a network link 720 that is connected to alocal network 722. For example, communication interface 718 may be anetwork card, a modem, a cable modem, or a satellite modem to provide adata communication connection to a corresponding type of telephone lineor communications line. Wireless links may also be implemented. In anysuch implementation, communication interface 718 sends and receiveselectrical, electromagnetic, or optical signals that carry digital datastreams representing various types of information.

Network link 720 typically provides data communication through one ormore networks to other data devices. For example, network link 720 mayprovide a connection through local network 722 to a host computer 724 orto data equipment operated by an Internet Service Provider (ISP) 726.ISP 726 in turn provides data communication services through theworld-wide packet data communication network now commonly referred to asthe “Internet” 728. Local network 722 and Internet 728 both useelectrical, electromagnetic, or optical signals that carry digital datastreams. The signals through the various networks and the signals onnetwork link 720 and through communication interface 718, which carrythe digital data to and from computer system 700, are example forms oftransmission media.

Computer system 700 can send messages and receive data, includingprogram code, through the network(s), network link 720, andcommunication interface 718. In the Internet example, a server 730 mighttransmit a requested code for an application program through theInternet 728, ISP 726, local network 722, and communication interface718. The received code may be executed by processor 704 as it isreceived, and/or stored in storage device 710, or other non-volatilestorage for later execution.

Operations of processes described herein can be performed in anysuitable order unless otherwise indicated herein or otherwise clearlycontradicted by context. Processes described herein (or variationsand/or combinations thereof) may be performed under the control of oneor more computer systems configured with executable instructions and maybe implemented as code (e.g., executable instructions, one or morecomputer programs or one or more applications) executing collectively onone or more processors, by hardware or combinations thereof. The codemay be stored on a computer-readable storage medium, for example, in theform of a computer program comprising a plurality of instructionsexecutable by one or more processors. The computer-readable storagemedium may be non-transitory. The code may also be provided carried by atransitory computer readable medium e.g., a transmission medium such asin the form of a signal transmitted over a network.

Conjunctive language, such as phrases of the form “at least one of A, B,and C,” or “at least one of A, B and C,” unless specifically statedotherwise or otherwise clearly contradicted by context, is otherwiseunderstood with the context as used in general to present that an item,term, etc., may be either A or B or C, or any nonempty subset of the setof A and B and C. For instance, in the illustrative example of a sethaving three members, the conjunctive phrases “at least one of A, B, andC” and “at least one of A, B and C” refer to any of the following sets:{A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Thus, such conjunctivelanguage is not generally intended to imply that certain embodimentsrequire at least one of A, at least one of B and at least one of C eachto be present.

The use of examples, or exemplary language (e.g., “such as”) providedherein, is intended merely to better illuminate embodiments of theinvention and does not pose a limitation on the scope of the inventionunless otherwise claimed. No language in the specification should beconstrued as indicating any non-claimed element as essential to thepractice of the invention.

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. The specification and drawings are,accordingly, to be regarded in an illustrative rather than a restrictivesense. The sole and exclusive indicator of the scope of the invention,and what is intended by the applicants to be the scope of the invention,is the literal and equivalent scope of the set of claims that issue fromthis application, in the specific form in which such claims issue,including any subsequent correction.

Further embodiments can be envisioned to one of ordinary skill in theart after reading this disclosure. In other embodiments, combinations orsub-combinations of the above-disclosed invention can be advantageouslymade. The example arrangements of components are shown for purposes ofillustration and combinations, additions, re-arrangements, and the likeare contemplated in alternative embodiments of the present invention.Thus, while the invention has been described with respect to exemplaryembodiments, one skilled in the art will recognize that numerousmodifications are possible.

For example, the processes described herein may be implemented usinghardware components, software components, and/or any combinationthereof. The specification and drawings are, accordingly, to be regardedin an illustrative rather than a restrictive sense. It will, however, beevident that various modifications and changes may be made thereuntowithout departing from the broader spirit and scope of the invention asset forth in the claims and that the invention is intended to cover allmodifications and equivalents within the scope of the following claims.

All references, including publications, patent applications, andpatents, cited herein are hereby incorporated by reference to the sameextent as if each reference were individually and specifically indicatedto be incorporated by reference and were set forth in its entiretyherein.

What is claimed is:
 1. A computer-implemented method for a programmaticarbitrary distribution in a modeling system, the method comprising:under the control of one or more computer systems configured withexecutable instructions: receiving a surface having one or more surfaceattributes in the modeling system; determining a point count of aplurality of points for distribution over the surface; applying theplurality of points to locations on the surface utilizing a scatteringfunction comprising one or more repulsion forces, effects of whichscattering function are modeled as to a first point and as to one ormore associated points with the first point; and generating the surfacehaving the plurality of points scattered across the locations of thesurface based on applying utilizing the scattering function.
 2. Thecomputer-implemented method of claim 1, further comprising: receiving adensity map for the surface that assigns a different point density toeach of a plurality of portions of the surface, wherein applying theplurality of points to the locations on the surface further utilizes thedensity map with the scattering function.
 3. The computer-implementedmethod of claim 1, wherein applying the plurality of points across thesurface comprises distributing the plurality of points across thesurface using a resettable seed value and applying the one or morerepulsion forces between the plurality of points, and wherein theresettable seed value is changeable over at least one of the surface oran additional surface for the scattering function.
 4. Thecomputer-implemented method of claim 1, wherein prior to receiving thesurface, the method further comprises: obtaining a UV mapping comprisingvertices designated over the surface; and configuring the UV mapping toa vertex space for the surface, wherein applying the plurality of pointsis further based on the configured UV mapping in the vertex space. 5.The computer-implemented method of claim 4, further comprising:assigning three-dimensional (3D) objects to the plurality of points;obtaining a texture mapping for at least one of the 3D objects or thesurface; and applying the texture mapping over at least a portion of thesurface, wherein applying the plurality of points is further based onthe applied texture mapping.
 6. The computer-implemented method of claim5, wherein the UV mapping comprises a baldness map and the portioncomprises a baldness portion of the surface, and wherein the applyingthe texture mapping comprises remove a subset of the plurality of pointsfor the baldness portion of the surface.
 7. The computer-implementedmethod of claim 5, wherein the one or more repulsion forces are treatedas pushing each of the plurality of points apart in one or moredirections.
 8. The computer-implemented method of claim 7, wherein theone or more repulsion forces are applied in the one or more directionsin an equilibrate amount according to one or more distance functions. 9.A computer system for a programmatic arbitrary distribution in amodeling system, the computer system comprising: at least one processor;and a computer-readable medium storing instructions, which when executedby the at least one processor, causes the computer system to performoperations comprising: receiving a surface having one or more surfaceattributes in the modeling system; determining a point count of aplurality of points for distribution over the surface; applying theplurality of points to locations on the surface utilizing a scatteringfunction comprising one or more repulsion forces, effects of whichscattering function are modeled as to a first point and as to one ormore associated points with the first point; and generating the surfacehaving the plurality of points scattered across the locations of thesurface based on applying utilizing the scattering function.
 10. Thecomputer system of claim 9, wherein the operations further comprise:receiving a density map for the surface that assigns a different pointdensity to each of a plurality of portions of the surface, whereinapplying the plurality of points to the locations on the surface furtherutilizes the density map with the scattering function.
 11. The computersystem of claim 9, wherein applying the plurality of points across thesurface comprises distributing the plurality of points across thesurface using a resettable seed value and applying the one or morerepulsion forces between the plurality of points, and wherein theresettable seed value is changeable over at least one of the surface oran additional surface for the scattering function.
 12. The computersystem of claim 9, wherein prior to providing the surface, theoperations further comprise: obtaining a UV mapping comprising verticesdesignated over the surface; and configuring the UV mapping to a vertexspace for the surface, wherein applying the plurality of points isfurther based on the configured UV mapping in the vertex space.
 13. Thecomputer system of claim 12, wherein the operations further comprise:assigning three-dimensional (3D) objects to the plurality of points;obtaining a texture mapping for at least one of the 3D objects or thesurface; and applying the texture mapping over at least a portion of thesurface, wherein applying the plurality of points is further based onthe applied texture mapping.
 14. The computer system of claim 13,wherein the UV mapping comprises a baldness map and the portioncomprises a baldness portion of the surface, and wherein the applyingthe texture mapping comprises remove a subset of the plurality of pointsfor the baldness portion of the surface.
 15. The computer system ofclaim 13, wherein the one or more repulsion forces are treated aspushing each of the plurality of points apart in one or more directions.16. The computer system of claim 15, wherein the one or more repulsionforces are applied in the one or more directions in an equilibrateamount according to one or more distance functions.
 17. A systemcomprising: at least one processor, and a storage medium storinginstructions, which when executed by the at least one processor, causethe system to implement the computer-implemented method of claim
 1. 18.A non-transitory computer-readable storage medium storing instructions,which when executed by at least one processor of a computer system,causes the computer system to carry out the computer-implemented methodof claim
 1. 19. A non-transitory computer-readable medium carryinginstructions, which when executed by at least one processor of acomputer system, causes the computer system to carry out thecomputer-implemented method of claim
 1. 20. A carrier medium carryingimage data that includes pixel information generated according to thecomputer-implemented method of claim 1.